*********************************************************
* INTEGRATION DES ECRITURES PAIE EN COMTPA              *
* PREMIER TRAITEMENT MARS 1999          STEPHANE HERVET *
*  --> EXPLOSION COMPTA JRME               AVRIL 2000 *
*  --> MAJ SUITE MODIF STEPHANE              MAI   2000 *
*  --> MODIF AFFECTATION SAISIE DEB. & CRED. JUIN  2000 *
*  --> MAJ SUITE MODIF STEPHANE              JUIN  2000 *
*  --> MODIF REQUETE			     JUILL 2000 *
*  --> MAJ SUITE MODIF STEPHANE              AOUT  2000 *
*  --> MAJ SUITE CCMX ASMAD VANES            JANV  2003 *
*      -INTEGRATION DES RUBRIQUES "DONT" PUIS DEDUCTION *
*      DE LA BASE MENSUALISEE (POUR ADM)                *
*      -INTEGRATION DES QTES SUR LES CPTES DE CLASSE 6  *
*      -ECLATEMENT PAR SECTEUR GEOGRAPHIQUE             *
*********************************************************

*    2   -->   
*    3   -->   
*    4   -->   
*    5   -->
   
*  400   -->   CALCUL DE LA SOMME DES HEURES
*  401   -->   CALCUL DU POURCENTAGE DE REPARTITION (SI PROD.) 
*  402   -->   CALCUL DU POURCENTAGE DE REPARTITION (SI ADM.) 
*  999   -->   INITIALISATION VARIABLES
* 1000   -->   TRAITEMENT DU FICHIERS GENERE
* 1100   -->   TRAITEMENT DES RUBRIQUES DE CHARGE
* 1200   -->   TRAITEMENT DES RUBRIQUES DE SAISIE
*
* 1500   -->   MISE EN TABLEAU
* 1600   -->   ECRITURE BROUILLARDDETAIL
* 1700   -->   ECRITURE FICHIER TEMPO

**************************
* OUVERTURE DES FICHIERS *
**************************

EXECUTE "DATE.FORMAT"
OPEN "","ACTIVITES" TO F.ACTIVITES ELSE STOP
W_CCMX="FAUX"
OPEN "","AIDANTSECTEURANAL" TO F.AIDANTSECTEURANAL THEN W_CCMX="VRAI"
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "","BROUILLARDDETAIL" TO F.BROUILLARDDETAIL ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","COMPTESPARTICULIERS" TO F.COMPTESPARTICULIERS ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "","LIENCOMPTA" TO F.LIENCOMPTA ELSE STOP
OPEN "","RUBCHARGE" TO F.RUBCHARGE ELSE STOP
OPEN "","RUBSAISIE" TO F.RUBSAISIE ELSE STOP
OPEN "","TABLES" TO F.TABLES ELSE STOP
OPEN "","TEMPO" TO F.TEMPO ELSE STOP
OPEN "","TEMPVENTILEDIT" TO F.TEMPVENTILEDIT ELSE STOP

*************************************************
* RECUPERATION PARAMETRES PASSES A LA PROCEDURE *
*************************************************
PROCREAD ARGUMENTS ELSE 
    *PRINT "ERREUR PROCREAD"
    STOP
END


W_CODASSOC=FIELD(ARGUMENTS,"|",2)
W_JOURNAL=FIELD(ARGUMENTS,"|",3)
W_PERIODE=FIELD(ARGUMENTS,"|",4)

IF W_CCMX="FAUX" THEN
   W_LIGNE=FIELD(ARGUMENTS,"|",5)
   W_CLEBROUILLARD=FIELD(ARGUMENTS,"|",6)
   W_PERIODECLAIR=FIELD(ARGUMENTS,"|",7)
   W_FINPERIODE=FIELD(ARGUMENTS,"|",8)
END ELSE
   W_FICHIER=FIELD(ARGUMENTS,"|",5)
END

EXECUTE "SET-DEC ."
EXECUTE "SET-THOUS ,"

W_CODEENTITE = W_CODASSOC
W_PERIODECLAIR=W_PERIODE[5,2]:"/":W_PERIODE[3,2] 
LISTEVENTIL =""
W_REQUETEVENTIL=""

****************************************************
* CHARGEMENT DE LA LISTE DES ARTICLES SELECTIONNES *
****************************************************

EXECUTE 'SSELECT DETAILCALCUL AVEC @ID = "':"[":W_PERIODE:'"  AND AVEC CodAssoContratDetailCalcul = "':W_CODASSOC:'" AND AVEC ConvColContratDetailCalcul <> "02" PAR SectionAnalytique PAR PeriodeDetailCalcul'

EXECUTE 'SAUVE-LISTE LISTEVENTIL'
EXECUTE "LISTE LISTEVENTIL" RETURNING MSGCODE	

IF MSGCODE<1>=209 THEN STOP
SELECT F.DETAILCALCUL TO LISTEVENTIL


*****************************************************
* LECTURE FICHIERS                        EN BOUCLE *
*****************************************************
W_NBART=0
W_TOTAL=0
W_TOTALBRUT=0
W_RANGPLUSFORT=0
W_RANGACT=0
W_RANGRUB=0
W_RANGSECTION=0
W_TOTALECLATBASE=0
W_TOTALECLATMONT=0
W_TOTALECLATMONTIMP=0
W_TOTALECLATNETPAYER=0
W_TOTALECLATMONTPAYER=0
W_PROD=0
W_ADM=0
ENR_CUMULS=""
ENR_CUMULS2=""
ENR_CUMULSGLOB=""
W_RUBSAISIEDONT=""
W_RUBAPSAISIEDONT=""

W_REQVIDE="FAUX"

W_RUBSAISIE=""
W_TABDYN=""
W_SECTEUR=""
W_TYPEPERSONNEL=""
W_TABSECTANAL=""
W_SECTIONANAL=""
W_SECTIONANALCHARGE=""
W_SECTIONANALAPCHARGE=""
W_TABACTIVITE=""
W_REGROUPBRUT=""
W_REGROUPCHARGE=""
W_REGROUPAPCHARGE=""
W_REGROUPSECTIONANAL=""
W_REGROUPSECTIONANALYTIQUE=""
ENR_SECTDISPO=""
ENR_SECTEURDISPO=""

W_RUBSAISIEFORT=""
W_RUBCHARGEFORT1=""
W_RUBCHARGEFORT2=""
W_RUBAPSAISIEFORT=""
W_CUMULSAISIE=0
W_CUMULSAISIEQTE=0
W_CUMULCHARGE1=0
W_CUMULCHARGE2=0
W_CUMULAPSAISIE=0
W_CUMULAPSAISIEQTE=0

W_ECLATDETAIL=""
W_REGROUPECLAT=""

GOSUB 999

* VIDAGE TAMPON
EXECUTE 'VIDER-FICHIER TEMPVENTILEDIT'

* RECUPERATION EVENTUEL COMPTE PARTICULIER REGUL
READ ENR_COMPTESPARTICULIERS FROM F.COMPTESPARTICULIERS,W_CODASSOC THEN
	W_COMPTEATTENTE=ENR_COMPTESPARTICULIERS<10>
END ELSE
	PRINT "COMPTES PARTICULIERS"
END

* LECTURE ASSOCIATION
READ ENR_ASSOCIATION FROM F.ASSOCIATION,W_CODASSOC ELSE 
     *PRINT "ERREUR ENTITE ":W_CODASSOC
     STOP
END

LOOP
    **************************************************
    * LECTURE RESULTAT REQUETE JUSQUE REQUETE = VIDE *
    **************************************************
    READNEXT CLE FROM LISTEVENTIL ELSE 
         W_REQVIDE="VRAI"
    END
    UNTIL W_REQVIDE="VRAI" DO

    W_NBART=W_NBART+1
    ********************************************
    * LECTURE + AFFECTATION DES DONNEES (READ) *
    ********************************************
    W_CODECONTRAT=CLE[1,8]
    W_CODEAIDANT=CLE[1,5]

    * LECTURE CONTRAT
    READ ENR_CONTRAT FROM F.CONTRAT,W_CODECONTRAT ELSE 
         *PRINT "ERREUR CONTRAT ":W_CODECONTRAT
         STOP
    END

    * LECTURE DETAILCALCUL
    READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,CLE ELSE
         *PRINT "ERREUR DETAILCALCUL ":CLE
	 STOP
    END

	 **************************************************
	 * GESTION TRI PAR SECTION ANALYTIQUE             *
	 * PARCOURS DES ACTIVITES DES CONTRATS (DE 1 A X) *
	 **************************************************
	 W_NBRUBSAISIE=DCOUNT(ENR_DETAILCALCUL<24>,CHAR(253))

	 W_TABACTIVITE<1>=""
	 W_TABACTIVITE<2>=""
	 W_TABACTIVITE<3>=""

	 W_TOTAL=0
	 W_RANG=1

         IF ENR_CONTRAT<6>="P" THEN
	      * TEST SI ATT 24,25,26 RENSEIGNE
	      IF W_NBRUBSAISIE=0 THEN
		   I=1
		   LOOP 
			UNTIL ENR_DETAILCALCUL<2,I>="" DO
   		        ENR_DETAILCALCUL<24,I>=ENR_DETAILCALCUL<2,I>
			IF ENR_DETAILCALCUL<3,I>="" THEN ENR_DETAILCALCUL<3,I>=0
		        ENR_DETAILCALCUL<25,I>=ENR_DETAILCALCUL<3,I>
		        ENR_DETAILCALCUL<26,I>=ENR_CONTRAT<36,1>
		        ENR_DETAILCALCUL<27,I>=ENR_DETAILCALCUL<5,I>
			I=I+1
		   REPEAT

	   	   W_NBRUBSAISIE=DCOUNT(ENR_DETAILCALCUL<24>,CHAR(253))
	      END		  		

              FOR X=1 TO W_NBRUBSAISIE    
                   * CALCUL SOMME DES HEURES
	           GOSUB 400
      	      NEXT 

	      * CALCUL % REPARTITION
	      GOSUB 401
	 END ELSE
	      * CALCUL % REPARTITION
	      GOSUB 402
	 END	      

         IF W_CCMX="VRAI" THEN

            READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CODEAIDANT ELSE ENR_CIVILAIDANT=""

            * AFFECTATION FICHIER MATRICE SAISIE
      	       * rubrique "DONT" pour administratifs mensualiss
               W_CUMBASEDONT=0
               W_CUMMONTDONT=0
      	       IF ENR_CONTRAT<5>="M" AND ENR_CONTRAT<6>= "A" THEN
       	          GOSUB 16
               END
	    GOSUB 12

            * AFFECTATION FICHIER MATRICE CHARGE
  	    GOSUB 13

            * AFFECTATION FICHIER MATRICE AP. SAISIE
 	    GOSUB 14

         END ELSE
            * AFFECTATION FICHIER MATRICE SAISIE
      	       * rubrique "DONT" pour administratifs mensualiss
               W_CUMBASEDONT=0
               W_CUMMONTDONT=0
      	       IF ENR_CONTRAT<5>="M" AND ENR_CONTRAT<6>= "A" THEN
       	          GOSUB 6
               END
	    GOSUB 2

            * AFFECTATION FICHIER MATRICE CHARGE
  	    GOSUB 3

            * AFFECTATION FICHIER MATRICE AP. SAISIE
 	    GOSUB 4
         END

    ***************************
    * INCREMENTATION VARIABLE *
    ***************************
    W_TYPEPERSONNEL=ENR_CONTRAT<6>
    W_TABDYN=""

REPEAT

   IF W_CCMX="VRAI" THEN
      J=1
      LOOP 
      UNTIL ENR_SECTDISPO<J>="" DO
 	 K=1
         LOOP 
         UNTIL ENR_SECTEURDISPO<K>="" DO
            GOSUB 5
            K=K+1
         REPEAT
	 J=J+1
      REPEAT

   END ELSE

      J=1
      LOOP 
      UNTIL ENR_SECTDISPO<J>="" DO
         GOSUB 5
	 J=J+1
	
      REPEAT
   END

**************
* TRAITEMENT *
**************

   * TRAITEMENT DES INFOS RECUPERE
   GOSUB 1000

   IF W_CCMX="VRAI" THEN

	* REMPLIT FICHIER CCMX
	READ ENR_LIENCOMPTA FROM F.LIENCOMPTA,W_FICHIER ELSE ENR_LIENCOMPTA=""

        W_Rang=1
	GOSUB 1800

   END ELSE

	* ECRITURE BROUILLARDDETAIL
	GOSUB 1600

	* SAUVEGARDE DES INFOS EN TAMPON POUR BROUILLARDTETE
	GOSUB 1700

   END

	* VIDAGE TAMPON
***   	EXECUTE 'VIDER-FICHIER TEMPVENTILEDIT'

   EXECUTE "SET-DEC ,"
   EXECUTE "SET-THOUS ."

STOP

***************************************************
* AFFECTATION FICHIER MATRICE RUB SAISIE (ECLAT.+PROD)
***************************************************
2 *

    I=1
    LOOP
	 UNTIL ENR_DETAILCALCUL<2,I>="" DO

         IF ENR_DETAILCALCUL<2,I> = "806" THEN
	    ENR_DETAILCALCUL<3,I>=ENR_DETAILCALCUL<3,I>-W_CUMBASEDONT
	    ENR_DETAILCALCUL<5,I>=ENR_DETAILCALCUL<5,I>-W_CUMMONTDONT
         END

	 W_CUMULSAISIE=ENR_DETAILCALCUL<5,I>
	 W_CUMULSAISIEQTE=ENR_DETAILCALCUL<3,I>

	 W_RUBSAISIEFORT=""

	 * COMPTE LE NBRE DE VALEURS DANS CALCUL %
         W_NBACTIVITEPOURC=DCOUNT(W_TABACTIVITE<1>,CHAR(253))

	 FOR J=1 TO W_NBACTIVITEPOURC
	      * LECTURE RUBRIQUE SAISIE
	      READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<2,I> ELSE ENR_RUBSAISIE=""	

  	      * VERIFIE SI RUB. EXISTE
	      READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"S":ENR_DETAILCALCUL<2,I>:W_TABACTIVITE<4,J> THEN
		   ENR_TEMPVENTILEDIT<1>=ENR_RUBSAISIE<1>

		   IF ENR_DETAILCALCUL<3,I>>=0 THEN
		       ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<3,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END ELSE
   		       ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<3,I>*W_TABACTIVITE<3,J>/10000-1/2)
		   END

		   IF ENR_DETAILCALCUL<5,I>>=0 THEN
   		       ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END ELSE
   		       ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000-1/2)
		   END
	      END ELSE
		   ENR_TEMPVENTILEDIT=""
		   ENR_TEMPVENTILEDIT<1>=ENR_RUBSAISIE<1>

		   IF ENR_DETAILCALCUL<3,I>>=0 THEN
		       ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<3,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END ELSE
  		       ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<3,I>*W_TABACTIVITE<3,J>/10000-1/2)
		   END

		   IF ENR_DETAILCALCUL<5,I>>=0 THEN
  		       ENR_TEMPVENTILEDIT<3>=INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END ELSE
  		       ENR_TEMPVENTILEDIT<3>=INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000-1/2)
		   END
	      END		

	      WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,"S":ENR_DETAILCALCUL<2,I>:W_TABACTIVITE<4,J> 

              IF ENR_DETAILCALCUL<5,I>>=0 THEN
   	           W_CUMULSAISIE=W_CUMULSAISIE-INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000+1/2)
	      END ELSE
   	           W_CUMULSAISIE=W_CUMULSAISIE-INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000-1/2)
	      END
              IF ENR_DETAILCALCUL<3,I>>=0 THEN
   	           W_CUMULSAISIEQTE=W_CUMULSAISIEQTE-INT(ENR_DETAILCALCUL<3,I>*W_TABACTIVITE<3,J>/10000+1/2)
	      END ELSE
   	           W_CUMULSAISIEQTE=W_CUMULSAISIEQTE-INT(ENR_DETAILCALCUL<3,I>*W_TABACTIVITE<3,J>/10000-1/2)
	      END

	      IF W_RUBSAISIEFORT="" THEN
		   W_RUBSAISIEFORT<1>="S":ENR_DETAILCALCUL<2,I>:W_TABACTIVITE<4,J> 
		   W_RUBSAISIEFORT<2>=ENR_TEMPVENTILEDIT<3>
	      END ELSE
		   IF W_RUBSAISIEFORT<2><ENR_TEMPVENTILEDIT<3> THEN
	  	        W_RUBSAISIEFORT<1>="S":ENR_DETAILCALCUL<2,I>:W_TABACTIVITE<4,J> 
		        W_RUBSAISIEFORT<2>=ENR_TEMPVENTILEDIT<3>
		   END
	      END

	      * MAJ FICHIER SECTION ANALYTIQUE DISPO	
	      K=1
	      LOOP
		   UNTIL ENR_SECTDISPO<K>=W_TABACTIVITE<4,J> OR ENR_SECTDISPO<K>="" DO
		   K=K+1
	      REPEAT
	      IF ENR_SECTDISPO<K>="" THEN ENR_SECTDISPO<K>=W_TABACTIVITE<4,J>

	 NEXT

	 IF W_CUMULSAISIE # 0 OR W_CUMULSAISIEQTE # 0 THEN
              READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_RUBSAISIEFORT<1> THEN	
	           ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+W_CUMULSAISIE
	           ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+W_CUMULSAISIEQTE
	      END
	      WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_RUBSAISIEFORT<1>
	 END

	 I=I+1
    REPEAT

    FOR J=1 TO W_NBACTIVITEPOURC
         * MAJ BASE CUMUL
         READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"BASE":W_TABACTIVITE<4,J> ELSE ENR_TEMPVENTILEDIT=""
	 ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(ENR_DETAILCALCUL<15>*W_TABACTIVITE<3,J>/10000+1/2)
	 ENR_TEMPVENTILEDIT<4>=ENR_TEMPVENTILEDIT<4>+INT(ENR_DETAILCALCUL<16>*W_TABACTIVITE<3,J>/10000+1/2)
	 ENR_TEMPVENTILEDIT<5>=ENR_TEMPVENTILEDIT<5>+INT(ENR_DETAILCALCUL<21>*W_TABACTIVITE<3,J>/10000+1/2)
         WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,"BASE":W_TABACTIVITE<4,J> 	   
    NEXT

RETURN


***************************************************
* AFFECTATION FICHIER MATRICE RUB CHARGE (ECLAT.+PROD)
***************************************************
3 *

    I=1
    LOOP
	 UNTIL ENR_DETAILCALCUL<8,I>="" DO

	 W_CUMULCHARGE1=ENR_DETAILCALCUL<11,I>
	 W_CUMULCHARGE2=ENR_DETAILCALCUL<14,I>

	 W_RUBCHARGEFORT1=""
	 W_RUBCHARGEFORT2=""

	 * COMPTE LE NBRE DE VALEURS DANS CALCUL %
         W_NBACTIVITEPOURC=DCOUNT(W_TABACTIVITE<1>,CHAR(253))

	 FOR J=1 TO W_NBACTIVITEPOURC
	      * LECTURE RUBRIQUE SAISIE
	      READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_DETAILCALCUL<8,I> ELSE ENR_RUBCHARGE=""	

	      * CALCULE PAR AVANCE LES VALEURS A AFFECTER
	      IF ENR_DETAILCALCUL<11,I>>=0 THEN W_TOTALSAL1=INT(ENR_DETAILCALCUL<11,I>*W_TABACTIVITE<3,J>/10000+1/2)
              IF ENR_DETAILCALCUL<11,I><0 THEN W_TOTALSAL1=INT(ENR_DETAILCALCUL<11,I>*W_TABACTIVITE<3,J>/10000-1/2)
              IF ENR_DETAILCALCUL<14,I>>=0 THEN W_TOTALPAT1=INT(ENR_DETAILCALCUL<14,I>*W_TABACTIVITE<3,J>/10000+1/2)
              IF ENR_DETAILCALCUL<14,I><0 THEN W_TOTALPAT1=INT(ENR_DETAILCALCUL<14,I>*W_TABACTIVITE<3,J>/10000-1/2)

  	      * VERIFIE SI RUB. EXISTE
	      READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"C":ENR_DETAILCALCUL<8,I>:W_TABACTIVITE<4,J> THEN

		   ENR_TEMPVENTILEDIT<1>=ENR_RUBCHARGE<1>
		   IF ENR_DETAILCALCUL<9,I><>"" AND ENR_DETAILCALCUL<9,I><>0 THEN
		        ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<9,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END ELSE
		        ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<12,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END
		   ENR_TEMPVENTILEDIT<3>=ENR_DETAILCALCUL<10,I>
		   ENR_TEMPVENTILEDIT<4>=ENR_TEMPVENTILEDIT<4>+W_TOTALSAL1
	           IF ENR_DETAILCALCUL<13,I>="" THEN ENR_DETAILCALCUL<13,I>=0
		   ENR_TEMPVENTILEDIT<5>=ENR_DETAILCALCUL<13,I>
		   ENR_TEMPVENTILEDIT<6>=ENR_TEMPVENTILEDIT<6>+W_TOTALPAT1
	      END ELSE
		   ENR_TEMPVENTILEDIT<1>=ENR_RUBCHARGE<1>
		   IF ENR_DETAILCALCUL<9,I><>"" AND ENR_DETAILCALCUL<9,I><>0 THEN
		        ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<9,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END ELSE
		        ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<12,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END
		   ENR_TEMPVENTILEDIT<3>=ENR_DETAILCALCUL<10,I>
		   ENR_TEMPVENTILEDIT<4>=W_TOTALSAL1
	           IF ENR_DETAILCALCUL<13,I>="" THEN ENR_DETAILCALCUL<13,I>=0
		   ENR_TEMPVENTILEDIT<5>=ENR_DETAILCALCUL<13,I>
		   ENR_TEMPVENTILEDIT<6>=W_TOTALPAT1
	      END	
   
	      WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,"C":ENR_DETAILCALCUL<8,I>:W_TABACTIVITE<4,J> 

	      W_CUMULCHARGE1=W_CUMULCHARGE1-W_TOTALSAL1
	      W_CUMULCHARGE2=W_CUMULCHARGE2-W_TOTALPAT1

	      IF W_RUBCHARGEFORT1="" THEN
		   W_RUBCHARGEFORT1<1>="C":ENR_DETAILCALCUL<8,I>:W_TABACTIVITE<4,J> 
   	           W_RUBCHARGEFORT1<2>=W_TOTALSAL1
		   W_RUBCHARGEFORT1<3>=W_TOTALPAT1
	      END ELSE
		   IF W_RUBCHARGEFORT1<2><W_TOTALSAL1 OR W_RUBCHARGEFORT1<3><W_TOTALPAT1 THEN
	  	        W_RUBCHARGEFORT1<1>="C":ENR_DETAILCALCUL<8,I>:W_TABACTIVITE<4,J> 
   	                W_RUBCHARGEFORT1<2>=W_TOTALSAL1
		        W_RUBCHARGEFORT1<3>=W_TOTALPAT1
		   END
	      END
	 NEXT

         READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_RUBCHARGEFORT1<1> THEN
	      ENR_TEMPVENTILEDIT<4>=ENR_TEMPVENTILEDIT<4>+W_CUMULCHARGE1
	      ENR_TEMPVENTILEDIT<6>=ENR_TEMPVENTILEDIT<6>+W_CUMULCHARGE2
	 END
	 WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_RUBCHARGEFORT1<1>

	 I=I+1
    REPEAT

RETURN


***************************************************
* AFFECTATION FICHIER MATRICE RUB AP. SAISIE (ECLAT.+PROD)
***************************************************
4 *
    I=1
    LOOP
	 UNTIL ENR_DETAILCALCUL<17,I>="" DO

   	 W_CUMULAPSAISIE=ENR_DETAILCALCUL<20,I>

   	 W_CUMULAPSAISIEQTE=ENR_DETAILCALCUL<18,I>

	 W_RUBAPSAISIEFORT=""

	 * COMPTE LE NBRE DE VALEURS DANS CALCUL %
         W_NBACTIVITEPOURC=DCOUNT(W_TABACTIVITE<1>,CHAR(253))
	 FOR J=1 TO W_NBACTIVITEPOURC
	      * LECTURE RUBRIQUE SAISIE
	      READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<17,I> ELSE ENR_RUBSAISIE=""	

  	      * VERIFIE SI RUB. EXISTE
	      READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"AS":ENR_DETAILCALCUL<17,I>:W_TABACTIVITE<4,J> THEN
		   ENR_TEMPVENTILEDIT<1>=ENR_RUBSAISIE<1>

	           IF ENR_DETAILCALCUL<18,I>>=0 THEN
		        ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<18,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END ELSE
		        ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<18,I>*W_TABACTIVITE<3,J>/10000-1/2)
		   END

	           IF ENR_DETAILCALCUL<20,I>>=0 THEN
		        ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END ELSE
		        ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000-1/2)
		   END
	      END ELSE
		   ENR_TEMPVENTILEDIT=""
		   ENR_TEMPVENTILEDIT<1>=ENR_RUBSAISIE<1>

		   IF ENR_DETAILCALCUL<18,I>>=0 THEN
		        ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<18,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END ELSE
		        ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<18,I>*W_TABACTIVITE<3,J>/10000-1/2)
		   END

		   IF ENR_DETAILCALCUL<20,I>>=0 THEN
		        ENR_TEMPVENTILEDIT<3>=INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END ELSE
		        ENR_TEMPVENTILEDIT<3>=INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000-1/2)
		   END
	      END		   
	      WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,"AS":ENR_DETAILCALCUL<17,I>:W_TABACTIVITE<4,J> 

	      IF ENR_DETAILCALCUL<20,I>>=0 THEN
                   W_CUMULAPSAISIE=W_CUMULAPSAISIE-INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000+1/2)
	      END ELSE
  	           W_CUMULAPSAISIE=W_CUMULAPSAISIE-INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000-1/2)
              END
	      IF ENR_DETAILCALCUL<18,I>>=0 THEN
                   W_CUMULAPSAISIEQTE=W_CUMULAPSAISIEQTE-INT(ENR_DETAILCALCUL<18,I>*W_TABACTIVITE<3,J>/10000+1/2)
	      END ELSE
  	           W_CUMULAPSAISIEQTE=W_CUMULAPSAISIEQTE-INT(ENR_DETAILCALCUL<18,I>*W_TABACTIVITE<3,J>/10000-1/2)
              END

	      IF W_RUBAPSAISIEFORT="" THEN
		   W_RUBAPSAISIEFORT<1>="AS":ENR_DETAILCALCUL<17,I>:W_TABACTIVITE<4,J> 
		   W_RUBAPSAISIEFORT<2>=ENR_TEMPVENTILEDIT<3>
	      END ELSE
		   IF W_RUBAPSAISIEFORT<2><ENR_TEMPVENTILEDIT<3> THEN
	  	        W_RUBAPSAISIEFORT<1>="AS":ENR_DETAILCALCUL<17,I>:W_TABACTIVITE<4,J> 
		        W_RUBAPSAISIEFORT<2>=ENR_TEMPVENTILEDIT<3>
		   END
	      END

	 NEXT

         READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_RUBAPSAISIEFORT<1> THEN
  	      ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+W_CUMULAPSAISIE
  	      ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+W_CUMULAPSAISIEQTE
	 END
	 WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_RUBAPSAISIEFORT<1>

	 I=I+1
    REPEAT

RETURN


***************************************************
* ECRITURE PAR SECTION ANAL
***************************************************
5 *

    W_TOTALBRUTHRES=0
    W_TOTALBRUT=0
    W_DERNIERI1=0
    W_DERNIERI2=0

    W_TOTALNET=0
    W_TOTALMONTANT=0
    W_TOTALNET2=0
    W_TOTALMONTANT2=0

    W_RANGNET=0

    W_ETATVENTIL=""

    W_ETATVENTIL<1>=ENR_ASSOCIATION<1>
    W_ETATVENTIL<2>=ENR_ASSOCIATION<3>:" ":ENR_ASSOCIATION<4>:" ":ENR_ASSOCIATION<5>:" ":ENR_ASSOCIATION<6>
    W_ETATVENTIL<3>=ENR_ASSOCIATION<8>:" ":ENR_ASSOCIATION<9>
    W_ETATVENTIL<4>=""
    W_ETATVENTIL<5>=""
        
    W_ETATVENTIL<6,2>=ENR_SECTDISPO<J>

    *************************************
    * TRAITEMENT RUB. SAISIE
    W_DERNIERI=7
    W_ANCIENI=7
	 
    W_Temp=""

    IF W_CCMX="VRAI" THEN
       W_Temp='SSELECT TEMPVENTILEDIT AVEC @ID = "S]" AND = "[':ENR_SECTDISPO<J>:ENR_SECTEURDISPO<K>:'" PAR @ID'
    END ELSE
       W_Temp='SSELECT TEMPVENTILEDIT AVEC @ID = "S]" AND = "[':ENR_SECTDISPO<J>:'" PAR @ID'
    END

    EXECUTE W_Temp

    I=2
 	 
    * MAJ FICHIER
    W_TERMINE=0
    LOOP
	 READNEXT CLE ELSE W_TERMINE=1
	 UNTIL W_TERMINE=1 DO

         * LECTURE FICHIER TAMPON
         READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,CLE ELSE ENR_TEMPVENTILEDIT=""

         W_ETATVENTIL<W_ANCIENI,I,1>=CLE[2,3]
         W_ETATVENTIL<W_ANCIENI,I,2>=ENR_TEMPVENTILEDIT<1>
         W_ETATVENTIL<W_ANCIENI,I,3>=ENR_TEMPVENTILEDIT<2>
         W_ETATVENTIL<W_ANCIENI,I,4>=ENR_TEMPVENTILEDIT<3>

	 * CUMUL MONTANT + BASE BRUT
*** modif 16/07/02 : uniquement rubriques type MOD, MOD dim  JF, et Inclus ds brut BASE et montant
***	 IF CLE[2,3]<>"810" THEN W_TOTALBRUTHRES=W_TOTALBRUTHRES+ENR_TEMPVENTILEDIT<2>
	READ ENR_RUBSAI FROM F.RUBSAISIE, CLE[2,3] THEN
		IF ENR_RUBSAI<2> = "3" OR ENR_RUBSAI<2> = "4" OR ENR_RUBSAI<2> = "5" THEN
			W_TOTALBRUTHRES=W_TOTALBRUTHRES+ENR_TEMPVENTILEDIT<2>
		END
	END

	 W_TOTALBRUT=W_TOTALBRUT+ENR_TEMPVENTILEDIT<3>

         W_ANCIENI=W_ANCIENI+1
         IF W_DERNIERI<W_ANCIENI THEN W_DERNIERI=W_ANCIENI
    REPEAT

    IF W_DERNIERI1<W_DERNIERI THEN 
	 W_DERNIERI1=W_DERNIERI
    END ELSE 
	 W_DERNIERI=W_DERNIERI1
    END	

    W_ETATVENTIL<W_DERNIERI+1>="BASE"

    * ECRITURE : TOTAL BRUT, NET IMPOSABLE, NET A PAYER
    READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"BASE":ENR_SECTDISPO<J> ELSE ENR_TEMPVENTILEDIT=""

    W_ETATVENTIL<W_DERNIERI+2,I,1>=W_TOTALBRUTHRES
    W_ETATVENTIL<W_DERNIERI+2,I,2>=W_TOTALBRUT
    W_ETATVENTIL<W_DERNIERI+3,I>=ENR_TEMPVENTILEDIT<3>

    W_RANGNET=W_DERNIERI+4
 
    W_ETATVENTIL<W_DERNIERI+5>="RUBRIQUE DE CHARGE"

    *************************************
    * TRAITEMENT RUB. CHARGE
    W_ANCIENI=W_DERNIERI+6
	 
    W_Temp=""
    IF W_CCMX="VRAI" THEN
       W_Temp='SSELECT TEMPVENTILEDIT AVEC @ID = "C]" AND = "[':ENR_SECTDISPO<J>:ENR_SECTEURDISPO<K>:'" PAR @ID'
    END ELSE
       W_Temp='SSELECT TEMPVENTILEDIT AVEC @ID = "C]" AND = "[':ENR_SECTDISPO<J>:'" PAR @ID'
    END
    EXECUTE W_Temp
	 
    * MAJ FICHIER
    W_TERMINE=0
    LOOP
         READNEXT CLE ELSE W_TERMINE=1
	 UNTIL W_TERMINE=1 DO

         * LECTURE FICHIER TAMPON
	 READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,CLE ELSE ENR_TEMPVENTILEDIT=""

         W_ETATVENTIL<W_ANCIENI,I,1>=CLE[2,3]
	 W_ETATVENTIL<W_ANCIENI,I,2>=ENR_TEMPVENTILEDIT<1>
	 W_ETATVENTIL<W_ANCIENI,I,3>=ENR_TEMPVENTILEDIT<2>
	 W_ETATVENTIL<W_ANCIENI,I,4>=ENR_TEMPVENTILEDIT<3>
	 W_ETATVENTIL<W_ANCIENI,I,5>=ENR_TEMPVENTILEDIT<4>
	 W_ETATVENTIL<W_ANCIENI,I,6>=ENR_TEMPVENTILEDIT<5>
	 W_ETATVENTIL<W_ANCIENI,I,7>=ENR_TEMPVENTILEDIT<6>

         W_ANCIENI=W_ANCIENI+1
         IF W_DERNIERI<W_ANCIENI THEN W_DERNIERI=W_ANCIENI

         W_TOTALNET=W_TOTALNET+ENR_TEMPVENTILEDIT<4>

    REPEAT

    IF W_DERNIERI2<W_DERNIERI THEN 
	 W_DERNIERI2=W_DERNIERI
    END ELSE 
         W_DERNIERI=W_DERNIERI2
    END	

    W_ETATVENTIL<W_DERNIERI>="RUBRIQUE APRES CHARGE"

    *************************************
    * TRAITEMENT RUB. AP. SAISIE
    W_ANCIENI=W_DERNIERI+1
	 

    W_Temp=""
    IF W_CCMX="VRAI" THEN
       W_Temp='SSELECT TEMPVENTILEDIT AVEC @ID = "AS]" AND = "[':ENR_SECTDISPO<J>:ENR_SECTEURDISPO<K>:'" PAR @ID'
    END ELSE
       W_Temp='SSELECT TEMPVENTILEDIT AVEC @ID = "AS]" AND = "[':ENR_SECTDISPO<J>:'" PAR @ID'
    END
    EXECUTE W_Temp
 	 
    * MAJ FICHIER
    W_TERMINE=0
    LOOP
         READNEXT CLE ELSE W_TERMINE=1
	 UNTIL W_TERMINE=1 DO

         * LECTURE FICHIER TAMPON
	 READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,CLE ELSE ENR_TEMPVENTILEDIT=""

         W_ETATVENTIL<W_ANCIENI,I,1>=CLE[3,3]
	 W_ETATVENTIL<W_ANCIENI,I,2>=ENR_TEMPVENTILEDIT<1>
	 W_ETATVENTIL<W_ANCIENI,I,3>=ENR_TEMPVENTILEDIT<2>
	 W_ETATVENTIL<W_ANCIENI,I,4>=ENR_TEMPVENTILEDIT<3>

	 W_TOTALMONTANT=W_TOTALMONTANT+ENR_TEMPVENTILEDIT<3>

         W_ANCIENI=W_ANCIENI+1
         IF W_DERNIERI<W_ANCIENI THEN W_DERNIERI=W_ANCIENI
    REPEAT

    W_APNET=0
    IF W_TOTALMONTANT=0 OR W_TOTALMONTANT="" THEN 
	W_APNET=0
    END ELSE
	W_APNET=1
    END

    I=1
    W_TOTALNET2=W_TOTALBRUT+W_TOTALNET

    IF W_APNET=1 THEN
         W_TOTALMONTANT2=W_TOTALNET2+W_TOTALMONTANT
    END ELSE
	 W_TOTALMONTANT2=W_TOTALNET2
    END

    * ECRITURE : NET A PAYER, MONTANT A PAYER
    READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"BASE":ENR_SECTDISPO<J> ELSE ENR_TEMPVENTILEDIT=""
    W_ETATVENTIL<W_RANGNET,2>=W_TOTALNET2
    W_ETATVENTIL<W_DERNIERI+1,I>=W_TOTALMONTANT2

    IF W_CCMX="VRAI" THEN
       WRITE W_ETATVENTIL ON F.TEMPVENTILEDIT,W_CODEENTITE:ENR_SECTDISPO<J>:ENR_SECTEURDISPO<K>
    END ELSE
       WRITE W_ETATVENTIL ON F.TEMPVENTILEDIT,W_CODEENTITE:ENR_SECTDISPO<J>
    END
RETURN


***********************************************************************
* AFFECTATION FICHIER MATRICE RUB SAISIE DE TYPE "DONT" (ECLAT.+PROD) *
***********************************************************************
6 *

    I=1
    LOOP
	 UNTIL ENR_DETAILCALCUL<33,I>="" DO

	 W_CUMULSAISIE=ENR_DETAILCALCUL<36,I>
	 W_CUMULSAISIEQTE=ENR_DETAILCALCUL<34,I>

	 W_RUBSAISIEFORT=""

	 * COMPTE LE NBRE DE VALEURS DANS CALCUL %
         W_NBACTIVITEPOURC=DCOUNT(W_TABACTIVITE<1>,CHAR(253))

	 FOR J=1 TO W_NBACTIVITEPOURC
	      * LECTURE RUBRIQUE SAISIE
	      READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<33,I> ELSE ENR_RUBSAISIE=""	

  	      * VERIFIE SI RUB. EXISTE
	      READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"S":ENR_DETAILCALCUL<33,I>:W_TABACTIVITE<4,J> THEN
		   ENR_TEMPVENTILEDIT<1>=ENR_RUBSAISIE<1>

		   IF ENR_DETAILCALCUL<34,I>>=0 THEN
		       ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000+1/2)
                       W_CUMBASEDONT=W_CUMBASEDONT+INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END ELSE
   		       ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000-1/2)
                       W_CUMBASEDONT=W_CUMBASEDONT+INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000-1/2)
		   END

		   IF ENR_DETAILCALCUL<36,I>>=0 THEN
   		       ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000+1/2)
                       W_CUMMONTDONT=W_CUMMONTDONT+INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END ELSE
   		       ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000-1/2)
                       W_CUMMONTDONT=W_CUMMONTDONT+INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000-1/2)
		   END
	      END ELSE
		   ENR_TEMPVENTILEDIT=""
		   ENR_TEMPVENTILEDIT<1>=ENR_RUBSAISIE<1>

		   IF ENR_DETAILCALCUL<34,I>>=0 THEN
		       ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000+1/2)
                       W_CUMBASEDONT=W_CUMBASEDONT+INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END ELSE
  		       ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000-1/2)
                       W_CUMBASEDONT=W_CUMBASEDONT+INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000-1/2)
		   END

		   IF ENR_DETAILCALCUL<36,I>>=0 THEN
  		       ENR_TEMPVENTILEDIT<3>=INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000+1/2)
                       W_CUMMONTDONT=W_CUMMONTDONT+INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000+1/2)
		   END ELSE
  		       ENR_TEMPVENTILEDIT<3>=INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000-1/2)
                       W_CUMMONTDONT=W_CUMMONTDONT+INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000-1/2)
		   END
	      END		

	      WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,"S":ENR_DETAILCALCUL<33,I>:W_TABACTIVITE<4,J> 

              IF ENR_DETAILCALCUL<36,I>>=0 THEN
   	           W_CUMULSAISIE=W_CUMULSAISIE-INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000+1/2)
	      END ELSE
   	           W_CUMULSAISIE=W_CUMULSAISIE-INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000-1/2)
	      END
              IF ENR_DETAILCALCUL<34,I>>=0 THEN
   	           W_CUMULSAISIEQTE=W_CUMULSAISIEQTE-INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000+1/2)
	      END ELSE
   	           W_CUMULSAISIEQTE=W_CUMULSAISIEQTE-INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000-1/2)
	      END

	      IF W_RUBSAISIEFORT="" THEN
		   W_RUBSAISIEFORT<1>="S":ENR_DETAILCALCUL<33,I>:W_TABACTIVITE<4,J> 
		   W_RUBSAISIEFORT<2>=ENR_TEMPVENTILEDIT<3>
	      END ELSE
		   IF W_RUBSAISIEFORT<2><ENR_TEMPVENTILEDIT<3> THEN
	  	        W_RUBSAISIEFORT<1>="S":ENR_DETAILCALCUL<33,I>:W_TABACTIVITE<4,J> 
		        W_RUBSAISIEFORT<2>=ENR_TEMPVENTILEDIT<3>
		   END
	      END

	      * MAJ FICHIER SECTION ANALYTIQUE DISPO	
	      K=1
	      LOOP
		   UNTIL ENR_SECTDISPO<K>=W_TABACTIVITE<4,J> OR ENR_SECTDISPO<K>="" DO
		   K=K+1
	      REPEAT
	      IF ENR_SECTDISPO<K>="" THEN ENR_SECTDISPO<K>=W_TABACTIVITE<4,J>

	 NEXT

	 IF W_CUMULSAISIE # 0 OR W_CUMULSAISIEQTE # 0 THEN
              READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_RUBSAISIEFORT<1> THEN	
	           ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+W_CUMULSAISIE
	           ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+W_CUMULSAISIEQTE
                   W_CUMMONTDONT=W_CUMMONTDONT+W_CUMULSAISIE
                   W_CUMBASEDONT=W_CUMBASEDONT+W_CUMULSAISIEQTE
	      END
	      WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_RUBSAISIEFORT<1>
	 END

	 I=I+1
    REPEAT

RETURN

********************************************************************
* AFFECTATION FICHIER MATRICE RUB SAISIE (ECLAT.+PROD) SPECIF CCMX *
********************************************************************
12 *

    I=1
    LOOP
	 UNTIL ENR_DETAILCALCUL<2,I>="" DO

         IF ENR_DETAILCALCUL<2,I> = "806" THEN
	    ENR_DETAILCALCUL<3,I>=ENR_DETAILCALCUL<3,I>-W_CUMBASEDONT
	    ENR_DETAILCALCUL<5,I>=ENR_DETAILCALCUL<5,I>-W_CUMMONTDONT
         END

         W_CUMULSAISIE=ENR_DETAILCALCUL<5,I>
         W_CUMULSAISIEQTE=ENR_DETAILCALCUL<3,I>

	 W_RUBSAISIEFORT=""

	 * COMPTE LE NBRE DE VALEURS DANS CALCUL %
         W_NBACTIVITEPOURC=DCOUNT(W_TABACTIVITE<1>,CHAR(253))

         W_TAB=""

	 FOR J=1 TO W_NBACTIVITEPOURC
	      * LECTURE RUBRIQUE SAISIE
	      READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<2,I> ELSE ENR_RUBSAISIE=""	
	
 	      W_TAB<1,J>=ENR_RUBSAISIE<1>
  	      IF ENR_DETAILCALCUL<3,I>>=0 THEN
	         W_TAB<2,J>=INT(ENR_DETAILCALCUL<3,I>*W_TABACTIVITE<3,J>/10000+1/2)
	      END ELSE
  	         W_TAB<2,J>=INT(ENR_DETAILCALCUL<3,I>*W_TABACTIVITE<3,J>/10000-1/2)
	      END

  	      IF ENR_DETAILCALCUL<5,I>>=0 THEN
  	         W_TAB<3,J>=INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000+1/2)
	      END ELSE
  	         W_TAB<3,J>=INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000-1/2)
	      END

              IF ENR_DETAILCALCUL<5,I>>=0 THEN
   	           W_CUMULSAISIE=W_CUMULSAISIE-INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000+1/2)
	      END ELSE
   	           W_CUMULSAISIE=W_CUMULSAISIE-INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000-1/2)
	      END
              IF ENR_DETAILCALCUL<3,I>>=0 THEN
   	           W_CUMULSAISIEQTE=W_CUMULSAISIEQTE-INT(ENR_DETAILCALCUL<3,I>*W_TABACTIVITE<3,J>/10000+1/2)
	      END ELSE
   	           W_CUMULSAISIEQTE=W_CUMULSAISIEQTE-INT(ENR_DETAILCALCUL<3,I>*W_TABACTIVITE<3,J>/10000-1/2)
	      END

	      IF W_RUBSAISIEFORT="" THEN
		   W_RUBSAISIEFORT<1>=J
		   W_RUBSAISIEFORT<2>=W_TAB<3,J>
	      END ELSE
		   IF W_RUBSAISIEFORT<2><W_TAB<3,J> THEN
	  	        W_RUBSAISIEFORT<1>=J
		        W_RUBSAISIEFORT<2>=W_TAB<3,J>
		   END
	      END

	      * MAJ FICHIER SECTION ANALYTIQUE DISPO	
	      K=1
	      LOOP
		   UNTIL ENR_SECTDISPO<K>=W_TABACTIVITE<4,J> OR ENR_SECTDISPO<K>="" DO
		   K=K+1
	      REPEAT
	      IF ENR_SECTDISPO<K>="" THEN ENR_SECTDISPO<K>=W_TABACTIVITE<4,J>

	 NEXT

	 IF W_CUMULSAISIE # 0 OR W_CUMULSAISIEQTE # 0 THEN
	    W_TAB<3,W_RUBSAISIEFORT<1>>=W_TAB<3,W_RUBSAISIEFORT<1>>+W_CUMULSAISIE
	    W_TAB<2,W_RUBSAISIEFORT<1>>=W_TAB<2,W_RUBSAISIEFORT<1>>+W_CUMULSAISIEQTE
	 END

         W_DONT="FAUX"
         W_AP="FAUX"
         GOSUB 22

	 I=I+1
    REPEAT

    FOR J=1 TO W_NBACTIVITEPOURC
         * MAJ BASE CUMUL
         READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"BASE":W_TABACTIVITE<4,J> ELSE ENR_TEMPVENTILEDIT=""
	 ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(ENR_DETAILCALCUL<15>*W_TABACTIVITE<3,J>/10000+1/2)
	 ENR_TEMPVENTILEDIT<4>=ENR_TEMPVENTILEDIT<4>+INT(ENR_DETAILCALCUL<16>*W_TABACTIVITE<3,J>/10000+1/2)
	 ENR_TEMPVENTILEDIT<5>=ENR_TEMPVENTILEDIT<5>+INT(ENR_DETAILCALCUL<21>*W_TABACTIVITE<3,J>/10000+1/2)
         WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,"BASE":W_TABACTIVITE<4,J> 	   
    NEXT

RETURN


********************************************************************
* AFFECTATION FICHIER MATRICE RUB CHARGE (ECLAT.+PROD) SPECIF CCMX *
********************************************************************

13 *

    I=1
    LOOP
	 UNTIL ENR_DETAILCALCUL<8,I>="" DO

	 W_CUMULCHARGE1=ENR_DETAILCALCUL<11,I>
	 W_CUMULCHARGE2=ENR_DETAILCALCUL<14,I>

	 W_RUBCHARGEFORT1=""
	 W_RUBCHARGEFORT2=""

	 * COMPTE LE NBRE DE VALEURS DANS CALCUL %
         W_NBACTIVITEPOURC=DCOUNT(W_TABACTIVITE<1>,CHAR(253))

         W_TAB=""

	 FOR J=1 TO W_NBACTIVITEPOURC
	      * LECTURE RUBRIQUE SAISIE
	      READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_DETAILCALCUL<8,I> ELSE ENR_RUBCHARGE=""	

	      * CALCULE PAR AVANCE LES VALEURS A AFFECTER
	      IF ENR_DETAILCALCUL<11,I>>=0 THEN W_TOTALSAL1=INT(ENR_DETAILCALCUL<11,I>*W_TABACTIVITE<3,J>/10000+1/2)
              IF ENR_DETAILCALCUL<11,I><0 THEN W_TOTALSAL1=INT(ENR_DETAILCALCUL<11,I>*W_TABACTIVITE<3,J>/10000-1/2)
              IF ENR_DETAILCALCUL<14,I>>=0 THEN W_TOTALPAT1=INT(ENR_DETAILCALCUL<14,I>*W_TABACTIVITE<3,J>/10000+1/2)
              IF ENR_DETAILCALCUL<14,I><0 THEN W_TOTALPAT1=INT(ENR_DETAILCALCUL<14,I>*W_TABACTIVITE<3,J>/10000-1/2)

	      W_TAB<1,J>=ENR_RUBCHARGE<1>
	      IF ENR_DETAILCALCUL<9,I><>"" AND ENR_DETAILCALCUL<9,I><>0 THEN
	         W_TAB<2,J>=ENR_DETAILCALCUL<9,I>
	      END ELSE
	         W_TAB<2,J>=ENR_DETAILCALCUL<12,I>
	      END
	      W_TAB<3,J>=ENR_DETAILCALCUL<10,I>
	      W_TAB<4,J>=W_TOTALSAL1
	      IF ENR_DETAILCALCUL<13,I>="" THEN ENR_DETAILCALCUL<13,I>=0
	      W_TAB<5,J>=ENR_DETAILCALCUL<13,I>
	      W_TAB<6,J>=W_TOTALPAT1

	      W_CUMULCHARGE1=W_CUMULCHARGE1-W_TOTALSAL1
	      W_CUMULCHARGE2=W_CUMULCHARGE2-W_TOTALPAT1

	      IF W_RUBCHARGEFORT1="" THEN
		   W_RUBCHARGEFORT1<1>=J
   	           W_RUBCHARGEFORT1<2>=W_TOTALSAL1
		   W_RUBCHARGEFORT1<3>=W_TOTALPAT1
	      END ELSE
		   IF W_RUBCHARGEFORT1<2><W_TOTALSAL1 OR W_RUBCHARGEFORT1<3><W_TOTALPAT1 THEN
	  	        W_RUBCHARGEFORT1<1>=J
   	                W_RUBCHARGEFORT1<2>=W_TOTALSAL1
		        W_RUBCHARGEFORT1<3>=W_TOTALPAT1
		   END
	      END
	 NEXT

	 W_TAB<4,W_RUBCHARGEFORT1<1>>=W_TAB<4,W_RUBCHARGEFORT1<1>>+W_CUMULCHARGE1
         W_TAB<6,W_RUBCHARGEFORT1<1>>=W_TAB<6,W_RUBCHARGEFORT1<1>>+W_CUMULCHARGE2

         GOSUB 23

	 I=I+1
    REPEAT

RETURN


************************************************************************
* AFFECTATION FICHIER MATRICE RUB AP. SAISIE (ECLAT.+PROD) SPECIF CCMX *
************************************************************************
14 *
    I=1
    LOOP
	 UNTIL ENR_DETAILCALCUL<17,I>="" DO

   	 W_CUMULAPSAISIE=ENR_DETAILCALCUL<20,I>
   	 W_CUMULAPSAISIEQTE=ENR_DETAILCALCUL<18,I>

	 W_RUBAPSAISIEFORT=""

	 * COMPTE LE NBRE DE VALEURS DANS CALCUL %
         W_NBACTIVITEPOURC=DCOUNT(W_TABACTIVITE<1>,CHAR(253))

         W_TAB=""

	 FOR J=1 TO W_NBACTIVITEPOURC
	      * LECTURE RUBRIQUE SAISIE
	      READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<17,I> ELSE ENR_RUBSAISIE=""	

	      W_TAB<1,J>=ENR_RUBSAISIE<1>

	      IF ENR_DETAILCALCUL<18,I>>=0 THEN
	         W_TAB<2,J>=INT(ENR_DETAILCALCUL<18,I>*W_TABACTIVITE<3,J>/10000+1/2)
	      END ELSE
	         W_TAB<2,J>=INT(ENR_DETAILCALCUL<18,I>*W_TABACTIVITE<3,J>/10000-1/2)
	      END

	      IF ENR_DETAILCALCUL<20,I>>=0 THEN
		 W_TAB<3,J>=INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000+1/2)
	      END ELSE
	         W_TAB<3,J>=INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000-1/2)
	      END

	      IF ENR_DETAILCALCUL<20,I>>=0 THEN
                   W_CUMULAPSAISIE=W_CUMULAPSAISIE-INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000+1/2)
	      END ELSE
  	           W_CUMULAPSAISIE=W_CUMULAPSAISIE-INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000-1/2)
              END
	      IF ENR_DETAILCALCUL<18,I>>=0 THEN
                   W_CUMULAPSAISIEQTE=W_CUMULAPSAISIEQTE-INT(ENR_DETAILCALCUL<18,I>*W_TABACTIVITE<3,J>/10000+1/2)
	      END ELSE
  	           W_CUMULAPSAISIEQTE=W_CUMULAPSAISIEQTE-INT(ENR_DETAILCALCUL<18,I>*W_TABACTIVITE<3,J>/10000-1/2)
              END

	      IF W_RUBAPSAISIEFORT="" THEN
		   W_RUBAPSAISIEFORT<1>=J
		   W_RUBAPSAISIEFORT<2>=W_TAB<3,J>
	      END ELSE
		   IF W_RUBAPSAISIEFORT<2><W_TAB<3,J> THEN
	  	        W_RUBAPSAISIEFORT<1>=J
		        W_RUBAPSAISIEFORT<2>=W_TAB<3,J>
		   END
	      END

	 NEXT

	 IF W_CUMULAPSAISIE # 0 OR W_CUMULAPSAISIEQTE # 0 THEN
	    W_TAB<3,W_RUBAPSAISIEFORT<1>>=W_TAB<3,W_RUBAPSAISIEFORT<1>>+W_CUMULAPSAISIE
	    W_TAB<2,W_RUBAPSAISIEFORT<1>>=W_TAB<2,W_RUBAPSAISIEFORT<1>>+W_CUMULAPSAISIEQTE
	 END
    
         W_DONT="FAUX"
         W_AP="VRAI"
         GOSUB 22

	 I=I+1
    REPEAT

RETURN



***********************************************************************************
* AFFECTATION FICHIER MATRICE RUB SAISIE DE TYPE "DONT" (ECLAT.+PROD) SPECIF CCMX *
***********************************************************************************
16 *

    I=1
    LOOP
	 UNTIL ENR_DETAILCALCUL<33,I>="" DO

	 W_CUMULSAISIE=ENR_DETAILCALCUL<36,I>
	 W_CUMULSAISIEQTE=ENR_DETAILCALCUL<34,I>

	 W_RUBSAISIEFORT=""

	 * COMPTE LE NBRE DE VALEURS DANS CALCUL %
         W_NBACTIVITEPOURC=DCOUNT(W_TABACTIVITE<1>,CHAR(253))

         W_TAB=""

	 FOR J=1 TO W_NBACTIVITEPOURC
	      * LECTURE RUBRIQUE SAISIE
	      READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<33,I> ELSE ENR_RUBSAISIE=""	

	      W_TAB<1,J>=ENR_RUBSAISIE<1>

   	      IF ENR_DETAILCALCUL<34,I>>=0 THEN
   	         W_TAB<2,J>=INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000+1/2)
   	      END ELSE
  	         W_TAB<2,J>=INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000-1/2)
	      END

   	      IF ENR_DETAILCALCUL<36,I>>=0 THEN
  	         W_TAB<3,J>=INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000+1/2)
   	      END ELSE
  	         W_TAB<3,J>=INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000-1/2)
	      END

              IF ENR_DETAILCALCUL<36,I>>=0 THEN
   	           W_CUMULSAISIE=W_CUMULSAISIE-INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000+1/2)
	      END ELSE
   	           W_CUMULSAISIE=W_CUMULSAISIE-INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000-1/2)
	      END

              IF ENR_DETAILCALCUL<34,I>>=0 THEN
   	           W_CUMULSAISIEQTE=W_CUMULSAISIEQTE-INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000+1/2)
	      END ELSE
   	           W_CUMULSAISIEQTE=W_CUMULSAISIEQTE-INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000-1/2)
	      END

	      IF W_RUBSAISIEFORT="" THEN
		   W_RUBSAISIEFORT<1>=J
		   W_RUBSAISIEFORT<2>=W_TAB<3,J>
	      END ELSE
		   IF W_RUBSAISIEFORT<2><W_TAB<3,J> THEN
	  	        W_RUBSAISIEFORT<1>=J
		        W_RUBSAISIEFORT<2>=W_TAB<3,J>
		   END
	      END

	      * MAJ FICHIER SECTION ANALYTIQUE DISPO	
	      K=1
	      LOOP
		   UNTIL ENR_SECTDISPO<K>=W_TABACTIVITE<4,J> OR ENR_SECTDISPO<K>="" DO
		   K=K+1
	      REPEAT
	      IF ENR_SECTDISPO<K>="" THEN ENR_SECTDISPO<K>=W_TABACTIVITE<4,J>

	 NEXT

	 IF W_CUMULSAISIE # 0 OR W_CUMULSAISIEQTE # 0 THEN
            W_TAB<3,W_RUBSAISIEFORT<1>>=W_TAB<3,W_RUBSAISIEFORT<1>>+W_CUMULSAISIE
            W_TAB<2,W_RUBSAISIEFORT<1>>=W_TAB<2,W_RUBSAISIEFORT<1>>+W_CUMULSAISIEQTE
	 END

	 FOR J=1 TO W_NBACTIVITEPOURC
            W_CUMBASEDONT=W_CUMBASEDONT+W_TAB<2,J>
            W_CUMMONTDONT=W_CUMMONTDONT+W_TAB<3,J>
         NEXT J

         W_DONT="VRAI"
         W_AP="FAUX"
         GOSUB 22

	 I=I+1
    REPEAT

RETURN

*********************************************************
* ECLATEMENT RUB SAISIE PAR SECTEUR GEO *
*********************************************************
22 *

   FOR J=1 TO W_NBACTIVITEPOURC

      W_CODESECTEUR=""
      READ ENR_AIDANT FROM F.AIDANTSECTEURANAL,W_CODECONTRAT ELSE ENR_AIDANT=""
      IF ENR_AIDANT # "" THEN
         K=1
         W_MV=0
         LOOP 
	 UNTIL ENR_AIDANT<1,K>=W_TABACTIVITE<1,J> OR ENR_AIDANT<1,K>="" DO
	    K=K+1
         REPEAT
         IF ENR_AIDANT<1,K>#"" THEN
            W_NB=DCOUNT(ENR_AIDANT<2,K>,CHAR(252))
            FOR L=1 TO W_NB
               W_CODESECTEUR<L>=ENR_AIDANT<2,K,L>
            NEXT L
            W_MV=K
         END ELSE
            W_CODESECTEUR=ENR_CIVILAIDANT<31>  
            ENR_AIDANT<3>=10000
            W_MV=1
         END 
      END ELSE
         W_CODESECTEUR=ENR_CIVILAIDANT<31>  
         ENR_AIDANT<3>=10000
         W_MV=1
      END

      W_CUMULSAISIE=W_TAB<3,J>
      W_CUMULSAISIEQTE=W_TAB<2,J>

      W_RUBSAISIEFORT=""
      W_NBSECTEUR=DCOUNT(W_CODESECTEUR,CHAR(254))

	 FOR K=1 TO W_NBSECTEUR

  	      * VERIFIE SI RUB. EXISTE
              IF W_DONT="FAUX" AND W_AP="FAUX" THEN
                 W_CLETEMP="S":ENR_DETAILCALCUL<2,I>:W_TABACTIVITE<4,J>:W_CODESECTEUR<K>
              END ELSE
                 IF W_DONT="VRAI" AND W_AP="FAUX" THEN
                    W_CLETEMP="S":ENR_DETAILCALCUL<33,I>:W_TABACTIVITE<4,J>:W_CODESECTEUR<K>
                 END ELSE
                    IF W_DONT="FAUX" AND W_AP="VRAI" THEN
                       W_CLETEMP="AS":ENR_DETAILCALCUL<17,I>:W_TABACTIVITE<4,J>:W_CODESECTEUR<K>
                    END
                 END
              END
	      READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_CLETEMP THEN
		   ENR_TEMPVENTILEDIT<1>=ENR_RUBSAISIE<1>

		   IF W_TAB<2,J> >= 0 THEN
		       ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(W_TAB<2,J>*ENR_AIDANT<3,W_MV,K>/10000+1/2)
		   END ELSE
   		       ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(W_TAB<2,J>*ENR_AIDANT<3,W_MV,K>/10000-1/2)
		   END

		   IF W_TAB<3,J> >= 0 THEN
   		       ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(W_TAB<3,J>*ENR_AIDANT<3,W_MV,K>/10000+1/2)
		   END ELSE
   		       ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(W_TAB<3,J>*ENR_AIDANT<3,W_MV,K>/10000-1/2)
		   END
	      END ELSE
		   ENR_TEMPVENTILEDIT=""
		   ENR_TEMPVENTILEDIT<1>=ENR_RUBSAISIE<1>

		   IF W_TAB<2,J>>=0 THEN
		       ENR_TEMPVENTILEDIT<2>=INT(W_TAB<2,J>*ENR_AIDANT<3,W_MV,K>/10000+1/2)
		   END ELSE
  		       ENR_TEMPVENTILEDIT<2>=INT(W_TAB<2,J>*ENR_AIDANT<3,W_MV,K>/10000-1/2)
		   END

		   IF W_TAB<3,J>>=0 THEN
  		       ENR_TEMPVENTILEDIT<3>=INT(W_TAB<3,J>*ENR_AIDANT<3,W_MV,K>/10000+1/2)
		   END ELSE
  		       ENR_TEMPVENTILEDIT<3>=INT(W_TAB<3,J>*ENR_AIDANT<3,W_MV,K>/10000-1/2)
		   END
	      END		

	      WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_CLETEMP

              IF W_TAB<3,J>>=0 THEN
   	           W_CUMULSAISIE=W_CUMULSAISIE-INT(W_TAB<3,J>*ENR_AIDANT<3,W_MV,K>/10000+1/2)
	      END ELSE
   	           W_CUMULSAISIE=W_CUMULSAISIE-INT(W_TAB<3,J>*ENR_AIDANT<3,W_MV,K>/10000-1/2)
	      END
              IF W_TAB<2,J>>=0 THEN
   	           W_CUMULSAISIEQTE=W_CUMULSAISIEQTE-INT(W_TAB<2,J>*ENR_AIDANT<3,W_MV,K>/10000+1/2)
	      END ELSE
   	           W_CUMULSAISIEQTE=W_CUMULSAISIEQTE-INT(W_TAB<2,J>*ENR_AIDANT<3,W_MV,K>/10000-1/2)
	      END

	      IF W_RUBSAISIEFORT="" THEN
		   W_RUBSAISIEFORT<1>=W_CLETEMP
		   W_RUBSAISIEFORT<2>=ENR_TEMPVENTILEDIT<3>
	      END ELSE
		   IF W_RUBSAISIEFORT<2><ENR_TEMPVENTILEDIT<3> THEN
	  	        W_RUBSAISIEFORT<1>=W_CLETEMP
		        W_RUBSAISIEFORT<2>=ENR_TEMPVENTILEDIT<3>
		   END
	      END

	      * MAJ FICHIER SECTEUR DISPO	
	      L=1
	      LOOP
		   UNTIL ENR_SECTEURDISPO<L>=W_CODESECTEUR<K> OR ENR_SECTEURDISPO<L>="" DO
		   L=L+1
	      REPEAT
	      IF ENR_SECTEURDISPO<L>="" THEN ENR_SECTEURDISPO<L>=W_CODESECTEUR<K>

	 NEXT

	 IF W_CUMULSAISIE # 0 OR W_CUMULSAISIEQTE # 0 THEN
              READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_RUBSAISIEFORT<1> THEN	
	           ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+W_CUMULSAISIE
	           ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+W_CUMULSAISIEQTE
	      END
	      WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_RUBSAISIEFORT<1>
	 END

   NEXT J

RETURN

*********************************************************
* ECLATEMENT RUB CHARGE PAR SECTEUR GEO *
*********************************************************
23 *

   FOR J=1 TO W_NBACTIVITEPOURC

      W_CODESECTEUR=""
      READ ENR_AIDANT FROM F.AIDANTSECTEURANAL,W_CODECONTRAT ELSE ENR_AIDANT=""
      IF ENR_AIDANT # "" THEN
         K=1
         W_MV=0
         LOOP 
	 UNTIL ENR_AIDANT<1,K>=W_TABACTIVITE<1,J> OR ENR_AIDANT<1,K>="" DO
	    K=K+1
         REPEAT
         IF ENR_AIDANT<1,K>#"" THEN
            W_NB=DCOUNT(ENR_AIDANT<2,K>,CHAR(252))
            FOR L=1 TO W_NB
               W_CODESECTEUR<L>=ENR_AIDANT<2,K,L>
            NEXT L
            W_MV=K
         END ELSE
            W_CODESECTEUR=ENR_CIVILAIDANT<31>  
            ENR_AIDANT<3>=10000
            W_MV=1
         END 
      END ELSE
         W_CODESECTEUR=ENR_CIVILAIDANT<31>  
         ENR_AIDANT<3>=10000
         W_MV=1
      END

      W_CUMULCHARGE1=W_TAB<4,J>
      W_CUMULCHARGE2=W_TAB<6,J>
      W_RUBCHARGEFORT1=""

      W_NBSECTEUR=DCOUNT(W_CODESECTEUR,CHAR(254))

	 FOR K=1 TO W_NBSECTEUR

  	      * VERIFIE SI RUB. EXISTE

              W_CLETEMP="C":ENR_DETAILCALCUL<8,I>:W_TABACTIVITE<4,J>:W_CODESECTEUR<K>

	      READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_CLETEMP THEN
		   ENR_TEMPVENTILEDIT<1>=ENR_RUBCHARGE<1>
		   ENR_TEMPVENTILEDIT<2>=W_TAB<2,J>
		   ENR_TEMPVENTILEDIT<3>=W_TAB<3,J>
		   IF W_TAB<4,J> >= 0 THEN
   		       ENR_TEMPVENTILEDIT<4>=ENR_TEMPVENTILEDIT<4>+INT(W_TAB<4,J>*ENR_AIDANT<3,W_MV,K>/10000+1/2)
		   END ELSE
   		       ENR_TEMPVENTILEDIT<4>=ENR_TEMPVENTILEDIT<4>+INT(W_TAB<4,J>*ENR_AIDANT<3,W_MV,K>/10000-1/2)
		   END
		   ENR_TEMPVENTILEDIT<5>=W_TAB<5,J>
		   IF W_TAB<6,J> >= 0 THEN
   		       ENR_TEMPVENTILEDIT<6>=ENR_TEMPVENTILEDIT<6>+INT(W_TAB<6,J>*ENR_AIDANT<3,W_MV,K>/10000+1/2)
		   END ELSE
   		       ENR_TEMPVENTILEDIT<6>=ENR_TEMPVENTILEDIT<6>+INT(W_TAB<6,J>*ENR_AIDANT<3,W_MV,K>/10000-1/2)
		   END

	      END ELSE
		   ENR_TEMPVENTILEDIT=""
		   ENR_TEMPVENTILEDIT<1>=ENR_RUBCHARGE<1>
		   ENR_TEMPVENTILEDIT<2>=W_TAB<2,J>
		   ENR_TEMPVENTILEDIT<3>=W_TAB<3,J>
		   IF W_TAB<4,J>>=0 THEN
  		       ENR_TEMPVENTILEDIT<4>=INT(W_TAB<4,J>*ENR_AIDANT<3,W_MV,K>/10000+1/2)
		   END ELSE
  		       ENR_TEMPVENTILEDIT<4>=INT(W_TAB<4,J>*ENR_AIDANT<3,W_MV,K>/10000-1/2)
		   END
		   ENR_TEMPVENTILEDIT<5>=W_TAB<5,J>
		   IF W_TAB<6,J> >= 0 THEN
   		       ENR_TEMPVENTILEDIT<6>=INT(W_TAB<6,J>*ENR_AIDANT<3,W_MV,K>/10000+1/2)
		   END ELSE
   		       ENR_TEMPVENTILEDIT<6>=INT(W_TAB<6,J>*ENR_AIDANT<3,W_MV,K>/10000-1/2)
		   END

	      END		

	      WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_CLETEMP

              IF W_TAB<4,J>>=0 THEN
   	           W_CUMULCHARGE1=W_CUMULCHARGE1-INT(W_TAB<4,J>*ENR_AIDANT<3,W_MV,K>/10000+1/2)
	      END ELSE
   	           W_CUMULCHARGE1=W_CUMULCHARGE1-INT(W_TAB<4,J>*ENR_AIDANT<3,W_MV,K>/10000-1/2)
	      END
              IF W_TAB<6,J>>=0 THEN
   	           W_CUMULCHARGE2=W_CUMULCHARGE2-INT(W_TAB<6,J>*ENR_AIDANT<3,W_MV,K>/10000+1/2)
	      END ELSE
   	           W_CUMULCHARGE2=W_CUMULCHARGE2-INT(W_TAB<6,J>*ENR_AIDANT<3,W_MV,K>/10000-1/2)
	      END

	      IF W_RUBCHARGEFORT1="" THEN
		   W_RUBCHARGEFORT1<1>=W_CLETEMP
   	           W_RUBCHARGEFORT1<2>=ENR_TEMPVENTILEDIT<4>
		   W_RUBCHARGEFORT1<3>=ENR_TEMPVENTILEDIT<6>
	      END ELSE
		   IF W_RUBCHARGEFORT1<2><ENR_TEMPVENTILEDIT<4> OR W_RUBCHARGEFORT1<3><ENR_TEMPVENTILEDIT<6> THEN
	  	        W_RUBCHARGEFORT1<1>=W_CLETEMP
   	                W_RUBCHARGEFORT1<2>=ENR_TEMPVENTILEDIT<4>
		        W_RUBCHARGEFORT1<3>=ENR_TEMPVENTILEDIT<6>
		   END
	      END

	 NEXT

	 IF W_CUMULCHARGE1<>0 OR W_CUMULCHARGE2<>0 THEN
              READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_RUBCHARGEFORT1<1> THEN	
	           ENR_TEMPVENTILEDIT<4>=ENR_TEMPVENTILEDIT<4>+W_CUMULCHARGE1
	           ENR_TEMPVENTILEDIT<6>=ENR_TEMPVENTILEDIT<6>+W_CUMULCHARGE2
	      END
	      WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_RUBCHARGEFORT1<1>
	 END

   NEXT J

RETURN


***************************************************
* CALCUL DE LA SOMME DES HEURES
***************************************************
400 *
    I=1

    LOOP 
         UNTIL W_TABACTIVITE<1,I>=ENR_DETAILCALCUL<26,X> OR W_TABACTIVITE<1,I>="" DO
	 I=I+1
    REPEAT

    IF W_TABACTIVITE<1,I>="" THEN
	 W_TABACTIVITE=REPLACE(W_TABACTIVITE,1,I;ENR_DETAILCALCUL<26,X>)
    END 
    W_TABACTIVITE=REPLACE(W_TABACTIVITE,2,I,1;ENR_DETAILCALCUL<24,X>)
    W_TABACTIVITE=REPLACE(W_TABACTIVITE,2,I,2;W_TABACTIVITE<2,I,2>+ENR_DETAILCALCUL<25,X>)
    W_TABACTIVITE=REPLACE(W_TABACTIVITE,2,I,3;W_TABACTIVITE<2,I,3>+ENR_DETAILCALCUL<27,X>)

    W_TOTAL=W_TOTAL+ENR_DETAILCALCUL<25,X>

RETURN


***************************************************
* CALCUL DU POURCENTAGE DE REPARTITION (SI PROD.)
***************************************************
401 *
    I=1
   
    W_TOTALREPART=0
    W_REPARTPLUSFORT=""
    W_REPARTPLUSFAIBLE=""

    W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,1;INT(W_TABACTIVITE<2,1,2>/W_TOTAL*10000+1/2))
    W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,2;1)

    LOOP 
         UNTIL W_TABACTIVITE<2,I,1>="" DO
         W_TABACTIVITE=REPLACE(W_TABACTIVITE,3,I;INT(W_TABACTIVITE<2,I,2>/W_TOTAL*10000+1/2))
	 * AFFECTE SECTION ANAL
	 READ ENR_ACTIVITES FROM F.ACTIVITES,W_TABACTIVITE<1,I> THEN
 	      W_TABACTIVITE<4,I>=ENR_ACTIVITES<2>
	 END

         W_TOTALREPART=W_TOTALREPART+W_TABACTIVITE<3,I>

         * STOCKE LE POURCENTAGE LE + FORT
	 IF INT((W_TABACTIVITE<2,I,2>/W_TOTAL)*10000+1/2)>W_REPARTPLUSFORT<1,1,1> THEN
	      W_REPARTPLUSFORT=REPLACE(W_REPARTPLUSFORT,1,1,1;INT(W_TABACTIVITE<2,I,2>/W_TOTAL*10000+1/2))
              W_REPARTPLUSFORT=REPLACE(W_REPARTPLUSFORT,1,1,2;I)
 	 END

         * STOCKE LE POURCENTAGE LE + FAIBLE
	 IF INT((W_TABACTIVITE<2,I,2>/W_TOTAL)*10000+1/2)<W_REPARTPLUSFAIBLE<1,1,1> THEN
	      W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,1;INT(W_TABACTIVITE<2,I,2>/W_TOTAL*10000+1/2))
              W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,2;I)
 	 END
         I=I+1
    REPEAT

    IF W_TOTALREPART#10000 THEN
	 IF W_TOTALREPART<10000 THEN
	      W_RANGPLUSFORT=W_REPARTPLUSFORT<1,1,2>
 	      W_RANGPLUSFAIBLE=W_REPARTPLUSFAIBLE<1,1,2>

    	      W_TABACTIVITE=REPLACE(W_TABACTIVITE,3,W_RANGPLUSFORT;W_REPARTPLUSFORT<1,1,1>-(W_TOTALREPART-10000))
	 END ELSE
	      W_RANGPLUSFORT=W_REPARTPLUSFORT<1,1,2>
 	      W_RANGPLUSFAIBLE=W_REPARTPLUSFAIBLE<1,1,2>

    	      W_TABACTIVITE=REPLACE(W_TABACTIVITE,3,W_RANGPLUSFAIBLE;W_REPARTPLUSFAIBLE<1,1,1>-(W_TOTALREPART-10000))
	 END
    END ELSE
	 W_RANGPLUSFORT=W_REPARTPLUSFORT<1,1,2>
 	 W_RANGPLUSFAIBLE=W_REPARTPLUSFAIBLE<1,1,2>
    END

    IF W_TABACTIVITE<1,1>="" THEN
	 READ ENR_SECTANAL FROM F.TABLES,"SECTANAL" ELSE ENR_SECTANAL=""

	 W_TABACTIVITE<1,1>=ENR_SECTANAL<2,1>
 	 W_TABACTIVITE<3,1>="10000"
    END

RETURN


***************************************************
* CALCUL DU POURCENTAGE DE REPARTITION (SI ADM.)
***************************************************
402 *
    I=1

    W_TOTALREPART=0
    W_REPARTPLUSFORT=""
    W_REPARTPLUSFAIBLE=""
    W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,1;ENR_CONTRAT<37,I>)
    W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,2;1)

    LOOP 
         UNTIL ENR_CONTRAT<36,I>="" DO

         W_TABACTIVITE<1,I>=ENR_CONTRAT<36,I> 
         W_TABACTIVITE<3,I>=ENR_CONTRAT<37,I>

	 * AFFECTE SECTION ANAL
	 READ ENR_ACTIVITES FROM F.ACTIVITES,W_TABACTIVITE<1,I> THEN
 	      W_TABACTIVITE<4,I>=ENR_ACTIVITES<2>
	 END

         * STOCKE LE POURCENTAGE LE + FORT
	 IF ENR_CONTRAT<37,I>>W_REPARTPLUSFORT<1,1> THEN
	      W_REPARTPLUSFORT=REPLACE(W_REPARTPLUSFORT,1,1,1;ENR_CONTRAT<37,I>)
              W_REPARTPLUSFORT=REPLACE(W_REPARTPLUSFORT,1,1,2;I)
 	 END

         * STOCKE LE POURCENTAGE LE + FAIBLE
	 IF ENR_CONTRAT<37,I><W_REPARTPLUSFAIBLE<1,1> THEN
	      W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,1;ENR_CONTRAT<37,I>)
              W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,2;I)
 	 END

         I=I+1
    REPEAT

    W_RANGPLUSFORT=W_REPARTPLUSFORT<1,1,2>
    W_RANGPLUSFAIBLE=W_REPARTPLUSFAIBLE<1,1,2>

    IF W_TABACTIVITE<3,1>="" THEN
 	 W_TABACTIVITE<3,1>="10000"
    END

RETURN


*****************************
* MISE A ZERO DES VARIABLES *
*****************************
999 W_BRUTACQUISBASE=0
    W_BRUTACQUISMONT=0
    W_NETIMPOSABLE=0
    W_NETAPAYER=0
    W_MONTANTAPAYER=0
    W_TOTALTAUX=0
    W_TOTALMONT=0
    W_RANGANAL=0
    W_RANGANALRUB=0
    W_NBATTRIBUTECLAT=0
    W_TOTALREPART=0
    W_RUBSAISIECODE=""
    W_RUBSAISIELIB=""
    W_RUBSAISIEBASE=""
    W_RUBSAISIEMONT=""
    W_RUBSAISIEAPCODE=""
    W_RUBSAISIEAPLIB=""
    W_RUBSAISIEAPBASE=""
    W_RUBSAISIEAPMONT=""
    W_RUBCHARGECODE=""
    W_RUBCHARGELIB=""
    W_RUBCHARGEBASE=""
    W_RUBCHARGETAUXPAT=""
    W_RUBCHARGEMONTPAT=""
    W_RUBCHARGETAUXSAL=""
    W_RUBCHARGEMONTSAL=""
    W_RUBCHARGETOTALTAUX=""
    W_RUBCHARGETOTALMONT=""
    W_REPARTPLUSFORT=""
    W_RUBSAISIEDONT=""
    W_RUBAPSAISIEDONT=""
    W_PROD=0
    W_ADM=0
    ENR_CUMULS=""
    ENR_CUMULS2=""
    ENR_CUMULSGLOB=""
RETURN


***********************************
* TRAITEMENT DU FICHIER RESULTANT *
***********************************
1000

	* SELECTION TEMPVENTILEDIT
	EXECUTE 'SSELECT TEMPVENTILEDIT AVEC @ID = "':W_CODASSOC:"]":'" PAR @ID'
	EXECUTE 'SAUVE-LISTE W_REQUETEVENTIL'
	EXECUTE "LISTE W_REQUETEVENTIL" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN
		W_POSITION=0
		W_CUMULDEBIT=0
		W_CUMULCREDIT=0

		SELECT F.TEMPVENTILEDIT TO W_REQUETEVENTIL

		W_FINI="FAUX"
		* PARCOURS DES CLES
		LOOP

			READNEXT W_CLE FROM W_REQUETEVENTIL ELSE W_FINI="VRAI"
			WHILE W_FINI="FAUX" DO
			READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_CLE ELSE PRINT "TEMPVENTILEDIT"			
			W_NBSECTANAL=DCOUNT(ENR_TEMPVENTILEDIT<6>,CHAR(253))
			W_NBLIGNEVAL=DCOUNT(ENR_TEMPVENTILEDIT,CHAR(254))
			W_SECTANAL=W_CLE[4,3]

			FOR ISA=1 TO W_NBSECTANAL

				IF ENR_TEMPVENTILEDIT<6,ISA>#"" THEN

					W_LIGNETRAIT=7

					*TRAITEMENT RUBRIQUE SAISIE
					LOOP
					WHILE ENR_TEMPVENTILEDIT<W_LIGNETRAIT>#"" AND W_LIGNETRAIT<=W_NBLIGNEVAL
						GOSUB 1200
						W_LIGNETRAIT=W_LIGNETRAIT+1
					REPEAT

					*RECHERCHE RUBRIQUE DE CHARGE
					LOOP
					WHILE ENR_TEMPVENTILEDIT<W_LIGNETRAIT>#"RUBRIQUE DE CHARGE" AND W_LIGNETRAIT<=W_NBLIGNEVAL
						W_LIGNETRAIT=W_LIGNETRAIT+1
					REPEAT

					W_LIGNETRAIT=W_LIGNETRAIT+1

					*TRAITEMENT RUBRIQUE CHARGE
					LOOP
					WHILE ENR_TEMPVENTILEDIT<W_LIGNETRAIT>#"RUBRIQUE APRES CHARGE" AND W_LIGNETRAIT<=W_NBLIGNEVAL
						GOSUB 1100
						W_LIGNETRAIT=W_LIGNETRAIT+1
					REPEAT
				
					W_LIGNETRAIT=W_LIGNETRAIT+1
					*TRAITEMENT RUBRIQUE AP CHARGE
					LOOP
					WHILE ENR_TEMPVENTILEDIT<W_LIGNETRAIT>#"" AND W_LIGNETRAIT<=W_NBLIGNEVAL
						GOSUB 1200
						W_LIGNETRAIT=W_LIGNETRAIT+1
					REPEAT	
		
				END

			NEXT ISA

		REPEAT
	END

RETURN


***********************
* RUBRIQUE DE CHARGES *
***********************
* MAJ DEBIT-CREDIT RUBRIQUE DE CHARGE
* VOIR SI VALEUR AU BON ENDROIT POUR DEBIT ET CREDIT...
1100

	READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1> ELSE PRINT "RUBCHARGE"
		
        W_QTE=""

        IF W_CCMX = "VRAI" THEN  
           W_SECTEUR=W_CLE[7,3]
        END

	IF ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,5> >= 0 THEN
		IF LEN (ENR_RUBCHARGE<20>) < 10 THEN		;* ORIGINE = ATT 21
			ENR_RUBCHARGE<20> = W_COMPTEATTENTE
		END
                
                IF W_CCMX = "VRAI" THEN              
		   W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<20>:W_SECTANAL:W_SECTEUR
                END ELSE
		   W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<20>:W_SECTANAL
                END

		W_DEBIT=0
		W_CREDIT=ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,5>
	END ELSE
		IF ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,5> < 0 THEN
			IF LEN (ENR_RUBCHARGE<20>) < 10 THEN
				ENR_RUBCHARGE<20> = W_COMPTEATTENTE
			END

                        IF W_CCMX = "VRAI" THEN   
			   W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<20>:W_SECTANAL:W_SECTEUR
                        END ELSE
			   W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<20>:W_SECTANAL
                        END

			W_DEBIT=ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,5> * -1
			W_CREDIT=0
		END
	END

	IF ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,5> # 0 AND ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,5> # "" THEN
		
		GOSUB 1500
		
		IF W_DEBIT=0 THEN
			IF LEN (ENR_RUBCHARGE<21>) < 10 THEN		;* ORIGINE = ATT 20
				ENR_RUBCHARGE<21> = W_COMPTEATTENTE
			END

                        IF W_CCMX = "VRAI" THEN  
			   W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<21>:W_SECTANAL:W_SECTEUR
                        END ELSE
			   W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<21>:W_SECTANAL	
                        END
					
			W_DEBIT=W_CREDIT
			W_CREDIT=0
		END ELSE
			IF LEN (ENR_RUBCHARGE<21>) < 10 THEN
				ENR_RUBCHARGE<21> = W_COMPTEATTENTE
			END

                        IF W_CCMX = "VRAI" THEN
			   W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<21>:W_SECTANAL:W_SECTEUR
                        END ELSE
			   W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<21>:W_SECTANAL
                        END

			W_CREDIT=W_DEBIT
			W_DEBIT=0
		END
		GOSUB 1500
	END

	IF ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,7> > 0 THEN
		IF LEN (ENR_RUBCHARGE<23>) < 10 THEN
			ENR_RUBCHARGE<23> = W_COMPTEATTENTE
		END

                IF W_CCMX = "VRAI" THEN
		   W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<23>:W_SECTANAL:W_SECTEUR
                END ELSE
		   W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<23>:W_SECTANAL
                END

		W_DEBIT=0
		W_CREDIT=ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,7>
	END ELSE
		IF ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,7> <0 THEN
			IF ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1><>"900" AND ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1><>"902" AND ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1><>"903" AND ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1><>"904" THEN
				IF LEN (ENR_RUBCHARGE<23>) < 10 THEN		;* ORIGINE = ATT 22
					ENR_RUBCHARGE<23> = W_COMPTEATTENTE
				END

                                IF W_CCMX = "VRAI" THEN
				   W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<23>:W_SECTANAL:W_SECTEUR
                                END ELSE
				   W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<23>:W_SECTANAL
                                END

				W_DEBIT=ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,7> * -1
			END ELSE
				IF LEN (ENR_RUBCHARGE<22>) < 10 THEN
					ENR_RUBCHARGE<22> = W_COMPTEATTENTE
				END

                                IF W_CCMX = "VRAI" THEN
				   W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<22>:W_SECTANAL:W_SECTEUR
                                END ELSE
				   W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<22>:W_SECTANAL
                                END

				W_DEBIT=ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,7> * -1
			END		
			W_CREDIT=0
		END
	END

	IF ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,7> # 0 AND ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,7> # "" THEN
		GOSUB 1500
		IF W_DEBIT=0 THEN
			IF LEN (ENR_RUBCHARGE<22>) < 10 THEN
				ENR_RUBCHARGE<22> = W_COMPTEATTENTE
			END

                        IF W_CCMX = "VRAI" THEN
			   W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<22>:W_SECTANAL:W_SECTEUR
                        END ELSE
			   W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<22>:W_SECTANAL
                        END
					
			W_DEBIT=W_CREDIT
			W_CREDIT=0
		END ELSE
  		    IF ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1><>"900" AND ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1><>"902" AND ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1><>"903" AND ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1><>"904" THEN
			IF LEN (ENR_RUBCHARGE<22>) < 10 THEN		;* ORIGINE = ATT 23
				ENR_RUBCHARGE<22> = W_COMPTEATTENTE
			END

                        IF W_CCMX = "VRAI" THEN
			   W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<22>:W_SECTANAL:W_SECTEUR
                        END ELSE
			   W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<22>:W_SECTANAL
                        END

			W_CREDIT=W_DEBIT
			W_DEBIT=0
		    END ELSE
			IF LEN (ENR_RUBCHARGE<23>) < 10 THEN	
				ENR_RUBCHARGE<23> = W_COMPTEATTENTE
			END

                        IF W_CCMX = "VRAI" THEN
			   W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<23>:W_SECTANAL:W_SECTEUR
                        END ELSE
			   W_COMPTE=W_CODASSOC:ENR_RUBCHARGE<23>:W_SECTANAL
                        END

			W_CREDIT=W_DEBIT
			W_DEBIT=0
		    END
		END

		GOSUB 1500
	END

RETURN


**********************
* RUBRIQUE DE SAISIE *
**********************
1200
	READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,1> ELSE PRINT "RUBSAISIE"
	IF LEN (ENR_RUBSAISIE<12>) < 10 THEN
		ENR_RUBSAISIE<12> = W_COMPTEATTENTE
	END

        IF W_CCMX = "VRAI" THEN  
	   W_COMPTE=W_CODASSOC:ENR_RUBSAISIE<12>:W_SECTANAL:W_CLE[7,3]
        END ELSE
	   W_COMPTE=W_CODASSOC:ENR_RUBSAISIE<12>:W_SECTANAL
        END

	W_DEBIT=0
	W_CREDIT=0
        W_QTE=0

	W_SIGNE=ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,4>

	IF W_SIGNE > 0 THEN
		IF ENR_RUBSAISIE<5>="+" THEN
			W_DEBIT=ABS(ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,4>)
		END ELSE
			W_CREDIT=ABS(ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,4>)
		END
	END ELSE
		IF ENR_RUBSAISIE<5>="-" THEN
			W_DEBIT=ABS(ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,4>)
		END ELSE
			W_CREDIT=ABS(ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,4>)
		END
	END
        W_QTE=ENR_TEMPVENTILEDIT<W_LIGNETRAIT,ISA,3>
 
	GOSUB 1500

	IF LEN (ENR_RUBSAISIE<13>) < 10 THEN
		ENR_RUBSAISIE<13> = W_COMPTEATTENTE
	END

	IF W_DEBIT=0 THEN

        	IF W_CCMX = "VRAI" THEN  
	   	   W_COMPTE=W_CODASSOC:ENR_RUBSAISIE<13>:W_SECTANAL:W_CLE[7,3]
        	END ELSE
	   	   W_COMPTE=W_CODASSOC:ENR_RUBSAISIE<13>:W_SECTANAL
        	END

		W_DEBIT=W_CREDIT
		W_CREDIT=0
	END ELSE
        	IF W_CCMX = "VRAI" THEN  
	   	   W_COMPTE=W_CODASSOC:ENR_RUBSAISIE<13>:W_SECTANAL:W_CLE[7,3]
        	END ELSE
	   	   W_COMPTE=W_CODASSOC:ENR_RUBSAISIE<13>:W_SECTANAL
        	END

		W_CREDIT=W_DEBIT
		W_DEBIT=0
	END

	GOSUB 1500

RETURN


**********************
* REMPLISSAGE COMPTE *
**********************
* REMPLISSAGE TABLEAU MEMO SERVANT POUR ECRITURE
1500
	W_TROUVECOMPTE="FAUX"
	IF W_COMPTE[4,1]#6 AND W_COMPTE[4,1]#7 THEN
		W_COMPTE=W_COMPTE[1,13]:"000000"
	END	

	* SAUVEGARDE POUR REMPLISSAGE AU PREMIER PASSAGE
	IF W_POSITION=0 THEN

		W_POSITION=W_POSITION+1
		W_TABLEAU<W_POSITION,1>=W_COMPTE
		W_TABLEAU<W_POSITION,2>=W_DEBIT
        	W_TABLEAU<W_POSITION,3>=W_CREDIT
        	W_TABLEAU<W_POSITION,4>=W_QTE
		W_TROUVECOMPTE="VRAI"

	END ELSE

		W_COMPTETAB=DCOUNT(W_TABLEAU,CHAR(254))
					
		* PARCOURS DES SECTION DEJA RENSEIGNE
		FOR ITAB=1 TO W_COMPTETAB

			* CORRESPONDANCE AVEC SECTION EXISTANT DEJA
			IF W_TABLEAU<ITAB,1>=W_COMPTE THEN

				W_TABLEAU<ITAB,2>=W_TABLEAU<ITAB,2>+W_DEBIT
				W_TABLEAU<ITAB,3>=W_TABLEAU<ITAB,3>+W_CREDIT
				W_TABLEAU<ITAB,4>=W_TABLEAU<ITAB,4>+W_QTE
				W_TROUVECOMPTE="VRAI"
				EXIT
			END

		NEXT ITAB

		IF W_TROUVECOMPTE="FAUX" THEN

			W_COMPTETAB=W_COMPTETAB+1
			W_TABLEAU<W_COMPTETAB,1>=W_COMPTE
			W_TABLEAU<W_COMPTETAB,2>=W_DEBIT
			W_TABLEAU<W_COMPTETAB,3>=W_CREDIT
			W_TABLEAU<W_COMPTETAB,4>=W_QTE
		END
	END

RETURN


*****************************
* ECRITURE BROUILLARDDETAIL *
*****************************
* ECRITURE DU TABLEAU
1600
	W_COMPTETAB=DCOUNT(W_TABLEAU,CHAR(254))

	* BOUCLE D'ECRITURE
	FOR ITAB=1 TO W_COMPTETAB
		W_VALEUR=W_TABLEAU<ITAB,2>-W_TABLEAU<ITAB,3>
		IF W_VALEUR # 0 THEN
			ENR_BROUILLARDDETAIL=""
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,1;DATE())
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,2;W_FINPERIODE)
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,3;"")
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_TABLEAU<ITAB,1>[1,13])
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;"SALAIRES : ":W_PERIODECLAIR)

			IF W_VALEUR >= 0 THEN
				ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;W_VALEUR)
				W_CUMULDEBIT=W_CUMULDEBIT+W_VALEUR
			END ELSE
				ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_VALEUR*-1)
				W_CUMULCREDIT=W_CUMULCREDIT+(W_VALEUR*-1)
			END

			IF W_TABLEAU<ITAB,1>[4,1]="6" OR W_TABLEAU<ITAB,1>[4,1]="7" THEN
				ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;W_TABLEAU<ITAB,1>[14,3])
				ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,10;W_TABLEAU<ITAB,4>)
			END

			W_LIGNE=W_LIGNE+1
			W_LIGNE=W_LIGNE "R%5"
			WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CLEBROUILLARD:W_LIGNE
		END
	NEXT ITAB
RETURN


********************************************************************
* SAUVEGARDE DANS TEMPO POUR RECUP VB POUR ECRITURE BROUILLARDTETE *
********************************************************************
1700
	ENR_TEMPO=""
	ENR_TEMPO=REPLACE(ENR_TEMPO,1;W_LIGNE)
	ENR_TEMPO=REPLACE(ENR_TEMPO,2;W_CUMULDEBIT)
	ENR_TEMPO=REPLACE(ENR_TEMPO,3;W_CUMULCREDIT)
	WRITE ENR_TEMPO ON F.TEMPO,"INTEGRECRPAIE"
RETURN


*****************************
*  REMPLIT FICHIER CCMX     *
*****************************

1800

        W_Mois=W_PERIODE[5,2]
        W_An=W_PERIODE[1,4]
        W_Mois=W_Mois+1
        IF W_Mois="13" THEN
           W_Mois="01"
           W_An=W_An+1
        END
        W_DateFin=ICONV("01/":W_Mois:"/":W_An,"D4/")-1
        W_DateFin=OCONV(W_DateFin,"D2/")
        W_DateFin=ICONV(W_DateFin,"MCN")
 
	W_COMPTETAB=DCOUNT(W_TABLEAU,CHAR(254))

	* BOUCLE D'ECRITURE
	FOR ITAB=1 TO W_COMPTETAB
		W_VALEUR=W_TABLEAU<ITAB,2>-W_TABLEAU<ITAB,3>
		IF W_VALEUR # 0 THEN
			W_Ligne=""
			W_Ligne=W_DateFin:";"
			W_Ligne=W_Ligne:W_JOURNAL:";;"
			W_Ligne=W_Ligne:W_TABLEAU<ITAB,1>[4,9]:";;"
			W_Ligne=W_Ligne:"SALAIRES : ":W_PERIODECLAIR:";"

			IF W_VALEUR >= 0 THEN
				W_Ligne=W_Ligne:"D;"
				W_Ligne=W_Ligne:OCONV(W_VALEUR,"MR2"):";"
			END ELSE
				W_Ligne=W_Ligne:"C;"
				W_Ligne=W_Ligne:OCONV(W_VALEUR*-1,"MR2"):";"
			END



			IF W_TABLEAU<ITAB,1>[4,1]="6" OR W_TABLEAU<ITAB,1>[4,1]="7" THEN
				W_Ligne=W_Ligne:OCONV(W_TABLEAU<ITAB,4>,"MR2"):";"
				
				IF INDEX(ENR_ASSOCIATION<1>,"ADI",1) = 0 THEN
					W_Ligne=W_Ligne:W_TABLEAU<ITAB,1>[14,3]:";"
					W_Ligne=W_Ligne:W_TABLEAU<ITAB,1>[17,3]
				END ELSE
					W_Ligne=W_Ligne:";"
				END
                        END ELSE
				W_Ligne=W_Ligne:";;"

			END
                        ENR_LIENCOMPTA<W_Rang>=W_Ligne

                        W_Rang=W_Rang+1

		END
	NEXT ITAB

	WRITE ENR_LIENCOMPTA ON F.LIENCOMPTA,W_FICHIER

RETURN
